package com.zjcloud.academic.service.impl;

import java.util.List;
import java.util.Map;
import java.util.ArrayList;
import java.util.HashMap;
import com.zjcloud.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zjcloud.academic.mapper.AcSemesterMapper;
import com.zjcloud.academic.domain.AcSemester;
import com.zjcloud.academic.service.IAcSemesterService;

/**
 * 学期管理Service业务层处理
 * 
 * @author zjcloud
 * @date 2024-01-01
 */
@Service
public class AcSemesterServiceImpl implements IAcSemesterService 
{
    @Autowired
    private AcSemesterMapper acSemesterMapper;

    /**
     * 查询学期管理
     * 
     * @param id 学期管理主键
     * @return 学期管理
     */
    @Override
    public AcSemester selectAcSemesterById(Long id)
    {
        return acSemesterMapper.selectAcSemesterById(id);
    }

    /**
     * 查询学期管理列表
     * 
     * @param acSemester 学期管理
     * @return 学期管理
     */
    @Override
    public List<AcSemester> selectAcSemesterList(AcSemester acSemester)
    {
        return acSemesterMapper.selectAcSemesterList(acSemester);
    }

    /**
     * 新增学期管理
     * 
     * @param acSemester 学期管理
     * @return 结果
     */
    @Override
    public int insertAcSemester(AcSemester acSemester)
    {
        acSemester.setCreateTime(DateUtils.getNowDate());
        return acSemesterMapper.insertAcSemester(acSemester);
    }

    /**
     * 修改学期管理
     * 
     * @param acSemester 学期管理
     * @return 结果
     */
    @Override
    public int updateAcSemester(AcSemester acSemester)
    {
        acSemester.setUpdateTime(DateUtils.getNowDate());
        return acSemesterMapper.updateAcSemester(acSemester);
    }

    /**
     * 批量删除学期管理
     * 
     * @param ids 需要删除的学期管理主键
     * @return 结果
     */
    @Override
    public int deleteAcSemesterByIds(Long[] ids)
    {
        return acSemesterMapper.deleteAcSemesterByIds(ids);
    }

    /**
     * 删除学期管理信息
     * 
     * @param id 学期管理主键
     * @return 结果
     */
    @Override
    public int deleteAcSemesterById(Long id)
    {
        return acSemesterMapper.deleteAcSemesterById(id);
    }

    /**
     * 获取当前学期
     * 
     * @return 当前学期
     */
    @Override
    public AcSemester selectCurrentSemester()
    {
        return acSemesterMapper.selectCurrentSemester();
    }

    /**
     * 设置当前学期
     * 
     * @param id 学期ID
     * @return 结果
     */
    @Override
    public int setCurrentSemester(Long id)
    {
        // 清除所有当前学期标记
        acSemesterMapper.clearCurrentSemester();
        
        // 设置新的当前学期
        AcSemester semester = new AcSemester();
        semester.setId(id);
        semester.setIsCurrent(1);
        semester.setUpdateTime(DateUtils.getNowDate());
        return acSemesterMapper.updateAcSemester(semester);
    }
    
    /**
     * 获取学期下拉列表
     * 
     * @return 学期下拉列表数据
     */
    @Override
    public List<Map<String, Object>> selectSemesterOptions()
    {
        List<Map<String, Object>> options = new ArrayList<>();
        
        // 查询所有可用学期
        AcSemester query = new AcSemester();
        query.setStatus(0); // 假设0表示未开始状态
        List<AcSemester> semesters = acSemesterMapper.selectAcSemesterList(query);
        
        // 转换为前端需要的格式
        for (AcSemester semester : semesters)
        {
            Map<String, Object> option = new HashMap<>();
            option.put("semesterId", semester.getId());
            option.put("semesterName", semester.getSemesterName());
            option.put("academicYear", semester.getAcademicYear());
            option.put("termType", semester.getTermType());
            option.put("isCurrent", semester.getIsCurrent());
            options.add(option);
        }
        
        return options;
    }
}